package org.zn.mvcbase.common.utilities;
import org.apache.commons.codec.digest.DigestUtils;


/**
 * 
 * @ProjectName:TestPorject
 * @ClassName:PasswordUtils.java
 * @Description: 密码加密工具类，包括MD5、SHA256、SHA384、SHA512,其中SHA截取前32位
 * @Copyright: Copyright (c) 2016
 * @author: 张大伟
 * @email: zhangdawei@91isoft.com
 * @date 2016年1月14日 下午2:09:39
 * @version V1.0
 */
public class PasswordUtility {

	private static PropertiesResourceUtility propertiesResourceUtility = new PropertiesResourceUtility();

	/**
	 * MD5加密，加密码前、后缀
	 * 
	 * @MethodName:digestPasswordMD5
	 * @author: 张大伟
	 * @email: zhangdawei@91isoft.com
	 * @date 2016年5月17日 下午12:38:15
	 * @version V1.0
	 * @param password
	 *            需要加密的密码
	 * @return
	 */
	public static String digestPasswordMD5(String password) {

		String passwordEncryptBeforStr = propertiesResourceUtility.getPropertity("passwordEncrypt.beforStr");
		String passwordEncryptAfterStr = propertiesResourceUtility.getPropertity("passwordEncrypt.afterStr");

		return DigestUtils.md5Hex(passwordEncryptBeforStr + password + passwordEncryptAfterStr);
	}

	/**
	 * SHA256安全散列算法，加密码前、后缀
	 * 
	 * @MethodName:digestPasswordSHA256
	 * @author: 张大伟
	 * @email: zhangdawei@91isoft.com
	 * @date 2016年5月17日 下午12:38:42
	 * @version V1.0
	 * @param password
	 *            需要加密的密码
	 * @return
	 */
	public static String digestPasswordSHA256(String password) {
		
		String passwordEncryptBeforStr = propertiesResourceUtility.getPropertity("passwordEncrypt.beforStr");
		String passwordEncryptAfterStr = propertiesResourceUtility.getPropertity("passwordEncrypt.afterStr");
		
		return DigestUtils.sha256Hex(passwordEncryptBeforStr + password + passwordEncryptAfterStr);
	}
	
	/**
	 * SHA256安全散列算法，加密码前、后缀，并且截取前32位
	 * 
	 * @MethodName:digestPasswordSHA256
	 * @author: 张大伟
	 * @email: zhangdawei@91isoft.com
	 * @date 2016年5月17日 下午12:38:42
	 * @version V1.0
	 * @param password
	 *            需要加密的密码
	 * @return
	 */
	public static String digestPassword32SHA256(String password) {
		
		String passwordEncryptBeforStr = propertiesResourceUtility.getPropertity("passwordEncrypt.beforStr");
		String passwordEncryptAfterStr = propertiesResourceUtility.getPropertity("passwordEncrypt.afterStr");
		
		return DigestUtils.sha256Hex(passwordEncryptBeforStr + password + passwordEncryptAfterStr).substring(0, 32);
	}
	
	/**
	 * SHA384安全散列算法，加密码前、后缀
	 * 
	 * @MethodName:digestPasswordSHA384
	 * @author: 张大伟
	 * @email: zhangdawei@91isoft.com
	 * @date 2016年5月17日 下午12:39:06
	 * @version V1.0
	 * @param password
	 *            需要加密的密码
	 * @return
	 */
	public static String digestPasswordSHA384(String password) {
		
		String passwordEncryptBeforStr = propertiesResourceUtility.getPropertity("passwordEncrypt.beforStr");
		String passwordEncryptAfterStr = propertiesResourceUtility.getPropertity("passwordEncrypt.afterStr");
		
		return DigestUtils.sha384Hex(passwordEncryptBeforStr + password + passwordEncryptAfterStr);
	}

	/**
	 * SHA384安全散列算法，加密码前、后缀，并且截取前32位
	 * 
	 * @MethodName:digestPasswordSHA384
	 * @author: 张大伟
	 * @email: zhangdawei@91isoft.com
	 * @date 2016年5月17日 下午12:39:06
	 * @version V1.0
	 * @param password
	 *            需要加密的密码
	 * @return
	 */
	public static String digestPassword32SHA384(String password) {
		
		String passwordEncryptBeforStr = propertiesResourceUtility.getPropertity("passwordEncrypt.beforStr");
		String passwordEncryptAfterStr = propertiesResourceUtility.getPropertity("passwordEncrypt.afterStr");
		
		return DigestUtils.sha384Hex(passwordEncryptBeforStr + password + passwordEncryptAfterStr).substring(0, 32);
	}
	
	/**
	 * SHA512安全散列算法，加密码前、后缀
	 * 
	 * @MethodName:digestPasswordSHA512
	 * @author: 张大伟
	 * @email: zhangdawei@91isoft.com
	 * @date 2016年5月17日 下午12:39:10
	 * @version V1.0
	 * @param password
	 *            需要加密的密码
	 * @return
	 */
	public static String digestPasswordSHA512(String password) {
		
		String passwordEncryptBeforStr = propertiesResourceUtility.getPropertity("passwordEncrypt.beforStr");
		String passwordEncryptAfterStr = propertiesResourceUtility.getPropertity("passwordEncrypt.afterStr");
		
		return DigestUtils.sha512Hex(passwordEncryptBeforStr + password + passwordEncryptAfterStr);
	}

	/**
	 * SHA512安全散列算法，加密码前、后缀，并且截取前32位
	 * 
	 * @MethodName:digestPasswordSHA512
	 * @author: 张大伟
	 * @email: zhangdawei@91isoft.com
	 * @date 2016年5月17日 下午12:39:10
	 * @version V1.0
	 * @param password
	 *            需要加密的密码
	 * @return
	 */
	public static String digestPassword32SHA512(String password) {
		
		String passwordEncryptBeforStr = propertiesResourceUtility.getPropertity("passwordEncrypt.beforStr");
		String passwordEncryptAfterStr = propertiesResourceUtility.getPropertity("passwordEncrypt.afterStr");
		
		return DigestUtils.sha512Hex(passwordEncryptBeforStr + password + passwordEncryptAfterStr).substring(0, 32);
	}
}
